<template>
  <fragment>
    <template v-for="(menu, index) in menuList">
      <!-- 如果当前有子菜单，则显示 el-submenu ，在pc-subment 里调用 递归组件 -->
      <el-submenu
        v-if="menu.children && menu.children.length > 0"
        :key="menu.path"
        :index="menu.path"
      >
        <template slot="title">
          <!-- <i :class="menu.icon"></i> -->
          <img v-show="menu.icon" :src="menu.icon" alt="icon" class="menu-icon" />
          <span slot="title" :class="!menu.icon ? 'menu-title' : ''">{{ menu.title }}</span>
        </template>
        <!-- 调用自身  此处是重点-->
        <MenuTree :menu-list="menu.children" @select="onSelect"></MenuTree>
      </el-submenu>
      <!-- 如果没有子菜单，则显示当前内容 -->
      <el-menu-item
        v-else
        :key="`${menu.path}${index}`"
        :index="menu.path"
        @click="onSelect(menu.path)"
      >
        <!-- <i :class="menu.icon"></i> -->
        <img v-show="menu.icon" :src="menu.icon" alt="icon" class="menu-icon" />
        <span slot="title" :class="!menu.icon ? 'menu-title' : ''">{{ menu.title }}</span>
      </el-menu-item>
    </template>
  </fragment>
</template>

<script>
import MenuTree from './MenuTree.vue'
import { Fragment } from 'vue-fragment'
export default {
  name: 'MenuTree',
  components: { MenuTree, Fragment },
  props: {
    menuList: {
      type: Array,
      default: () => [],
    },
  },
  data() {
    return {}
  },
  methods: {
    onSelect(menu) {
      this.$emit('select', menu)
    },
  },
}
</script>

<style scoped lang="scss">
.menu-icon {
  width: 15px;
  height: 15px;
  margin-right: 16px;
}
</style>
